ç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ïŒCIïŒã®äžçãšããã€ãã©ã€ã³èªååããŒã«ãããã«ãœãããŠã§ã¢éçºã¯ãŒã¯ãããŒã«é©åœããããããã°ããŒãã«ããŒã å šäœã§è¿ éãªãªãªãŒã¹ãšå質åäžãå¯èœã«ããããæ¢ããŸãã
ç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ïŒãã€ãã©ã€ã³èªååããŒã«ã«ãããœãããŠã§ã¢éçºã®å¹çå
仿¥ã®ããŒã¹ã®éããœãããŠã§ã¢éçºç°å¢ã«ãããŠãé«å質ãªã³ãŒããè¿ éã«æäŸã§ããèœåã¯æéèŠã§ããç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ïŒCIïŒã¯ãéçºããŒã ããŸãã«ãããéæã§ããããã«ããéèŠãªãã©ã¯ãã£ã¹ãšããŠç»å ŽããŸãããCIã®æ žå¿ã¯ãéçºè ãã³ãŒã倿Žãäžå€®ãªããžããªã«é »ç¹ã«çµ±åãããã®åŸèªååããããã«ããšãã¹ããå®è¡ãããéçºãã©ã¯ãã£ã¹ã§ãããã®ããã»ã¹ã¯ãé©åãªãã€ãã©ã€ã³èªååããŒã«ã§å¹æçã«å®è£ ããããšãéçºãµã€ã¯ã«ãåçã«å éããçµ±ååé¡ãæå°éã«æããæçµçã«ãããå ç¢ã§ä¿¡é Œæ§ã®é«ããœãããŠã§ã¢è£œåã«ã€ãªãããŸãããã®ããã°èšäºã§ã¯ãCIã®äžçãæãäžãããã®ã¡ãªããã課é¡ããããŠæãéèŠãªããšã«ããã€ãã©ã€ã³èªååããŒã«ããã®æåããå®è£ ã®åååã§ãããã°ããŒãã«ãœãããŠã§ã¢ããŒã ã«é¢é£ããäŸãæäŸããæ¹æ³ãæ€èšããŸãã
ç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ïŒCIïŒã®çè§£
ç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ã¯ãåãªãããŒã«ã®ã»ãã以äžã®ãã®ã§ããããã¯å²åŠã§ããããã¯ãçµ±ååé¡ãæ©æãã€é »ç¹ã«æ€åºã解決ããããã«èšèšããããç¶ç¶çãªãã¹ããšçµ±åãžã®ã³ãããã¡ã³ãã§ãããã®ã¢ãããŒãã¯ã倧éã®ã³ãŒããé »ç¹ã«çµ±åããããã°ãã°é倧ãªé å»¶ãšææ»ããåŒãèµ·ããåŸæ¥ã®éçºã¢ãã«ãšã¯å¯Ÿç §çã§ãã
CIã®äž»èŠååïŒ
- é »ç¹ãªã³ãŒãçµ±åïŒéçºè ã¯1æ¥ã«è€æ°åãã³ãŒã倿Žãå ±æãªããžããªã«ããŒãžããŸããããã«ãããã³ãŒã倿Žã®ãµã€ãºãæå°éã«æãããããã°ã®ç¹å®ãšä¿®æ£ã容æã«ãªããŸãã
- èªååããããã«ãïŒåã³ãŒãçµ±åã®åŸãèªååããããã«ãããã»ã¹ãããªã¬ãŒãããŸãããã®ãã«ãã«ã¯ãã³ãŒãã®ã³ã³ãã€ã«ãããã±ãŒãžåãããã³ã³ãŒãã¹ã¿ã€ã«ãéçè§£æã®ãããªäºåçãªãã§ãã¯ã®å®è¡ãå«ãŸããŸãã
- èªååããããã¹ãïŒãã«ããæåããåŸãå æ¬çãªèªååãã¹ãã¹ã€ãŒãïŒåäœãã¹ããçµ±åãã¹ããããã³ãšã³ãããŒãšã³ããã¹ãã®å¯èœæ§ïŒãå®è¡ãããŸãããããã®ãã¹ãã¯ãçµ±åãããã³ãŒãã®æ©èœãšåè³ªãæ€èšŒããŸãã
- è¿ éãªãã£ãŒãããã¯ïŒéçºè ã¯ããã«ããšãã¹ãã®çµæã«é¢ãã峿ã®ãã£ãŒãããã¯ãåãåããŸããããã«ãããçºçãããããªãåé¡ãè¿ éã«ç¹å®ããä¿®æ£ããããšãã§ããŸãã
- ããŒãžã§ã³ç®¡çïŒCIã¯ãã³ãŒã倿Žã管çããã³ã©ãã¬ãŒã·ã§ã³ã容æã«ããããã«ãããŒãžã§ã³ç®¡çã·ã¹ãã ïŒGitãªã©ïŒã«å€§ããäŸåããŠããŸãã
CIå®è£ ã®ã¡ãªããïŒ
- çµ±åãªã¹ã¯ã®è»œæžïŒé »ç¹ãªçµ±åã«ãããå°ããªå€æŽã¯å€§ããªå€æŽããã解決ã容æã§ãããããçµ±åç«¶åã®ãªã¹ã¯ãæå°éã«æããããŸãã
- åžå Žæå ¥ãŸã§ã®æéã®ççž®ïŒãã«ãããã¹ãããªãªãŒã¹ã®ããã»ã¹ãèªååããããšã§ãCIã¯ãœãããŠã§ã¢éçºã©ã€ããµã€ã¯ã«ãå éããããé »ç¹ãªãªãªãŒã¹ãå¯èœã«ããŸãã
- ã³ãŒãå質ã®åäžïŒèªååããããã¹ãã«ãããã³ãŒãã培åºçã«ãã¹ãããããã°ãå°ãªããªããããå ç¢ãªè£œåã«ãªããŸãã
- éçºè ã®çç£æ§åäžïŒCIã¯ãéçºè ãæåã¿ã¹ã¯ããè§£æŸããã³ãŒãã®èšè¿°ãšè€éãªåé¡ã®è§£æ±ºã«éäžã§ããããã«ããŸãã
- æ©æã®ãã°æ€åºïŒãã°ã¯éçºãµã€ã¯ã«ã®æ©ã段éã§ç¹å®ããã察åŠããããããä¿®æ£ã«å¿ èŠãªã³ã¹ããšåŽåãåæžãããŸãã
- ã³ã©ãã¬ãŒã·ã§ã³ã®åŒ·åïŒCIã¯ãã³ãŒãã¬ãã¥ãŒãšå ±æã³ãŒãã®æææš©ãé »ç¹ã«å¥šå±ããããšã«ãããéçºè éã®ããè¯ãã³ã©ãã¬ãŒã·ã§ã³ãä¿é²ããŸãã
ãã€ãã©ã€ã³èªååããŒã«ïŒCIã®ãšã³ãžã³
CIã®ååã¯éèŠã§ãããçã®éæ³ã¯ãã€ãã©ã€ã³èªååããŒã«ãéããŠèµ·ãããŸãããããã®ããŒã«ã¯ãã³ãŒãçµ±åãããããã€ã¡ã³ããŸã§ãCIããã»ã¹å šäœããªãŒã±ã¹ãã¬ãŒã·ã§ã³ããå®çŸ©ãããé åºã§äžé£ã®èªååãããã¹ããããã€ãŸããã€ãã©ã€ã³ãå®çŸ©ããã³å®è¡ããŸãããããã®ããŒã«ã«ãããããŒã ã¯æå°éã®æåä»å ¥ã§ãœãããŠã§ã¢ããã«ãããã¹ãããããã€ã§ããŸãã
äžè¬çãªãã€ãã©ã€ã³èªååããŒã«ïŒ
æ°å€ãã®ããŒã«ãå©çšå¯èœã§ãããããããã«é·æãšçæããããŸããããŒã«ã®éžæã¯ããããžã§ã¯ãã®ç¹å®ã®ããŒãºãéçºããŒã ã®æ¢åã®ã€ã³ãã©ã¹ãã©ã¯ãã£ãããã³äºç®ã®å¶çŽã«ãã°ãã°äŸåããŸãã以äžã«ãæãåºã䜿çšãããŠããCI/CDïŒç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ïŒç¶ç¶çããªããªãŒãŸãã¯ãããã€ã¡ã³ãïŒããŒã«ã®æŠèŠã瀺ããŸãã
- JenkinsïŒãªãŒãã³ãœãŒã¹ã§ãéåžžã«æè»æ§ãé«ããåºãæ¡çšãããŠããCI/CDããŒã«ã§ããJenkinsã¯ããã®åºç¯ãªãã©ã°ã€ã³ãšã³ã·ã¹ãã ã§ç¥ãããŠãããã»ãŒãã¹ãŠã®æ¢åã®ããŒã«ããµãŒãã¹ãšçµ±åã§ããŸããéåžžã«ã«ã¹ã¿ãã€ãºå¯èœã§ãããããŸããŸãªãããžã§ã¯ãããŒãºã«å¯Ÿå¿ã§ããæ±çšæ§ã®é«ãéžæè¢ã§ãã
- GitLab CI/CDïŒäººæ°ã®ããGitãªããžããªç®¡çãã©ãããã©ãŒã ã§ããGitLabã«çŽæ¥çµ±åãããŠããŸããGitLab CI/CDã¯ãã·ãŒã ã¬ã¹ãªCI/CDãšã¯ã¹ããªãšã³ã¹ãæäŸãããã€ãã©ã€ã³ã®ç®¡çãšãœãããŠã§ã¢éçºã¯ãŒã¯ãããŒã®èªååã容æã«ããŸãã
- CircleCIïŒäœ¿ãããããé床ãã¹ã±ãŒã©ããªãã£ã§ç¥ãããã¯ã©ãŠãããŒã¹ã®CI/CDãã©ãããã©ãŒã ã§ããCircleCIã¯ãããŸããŸãªããã°ã©ãã³ã°èšèªãšãã©ãããã©ãŒã ã«åªãããµããŒããæäŸããŸãã
- Azure DevOpsïŒæ§Visual Studio Team ServicesïŒïŒMicrosoftã®å æ¬çãªDevOpsããŒã«ã¹ã€ãŒãã«ã¯ãAzure Pipelinesãå«ãŸããŠããŸããAzure Pipelinesã¯ãAzureããã®ä»ã®ã¯ã©ãŠããããã€ããŒãšã·ãŒã ã¬ã¹ã«çµ±åãããããŸããŸãªèšèªããã©ãããã©ãŒã ããµããŒãããŠããŸãã
- AWS CodePipelineïŒAmazon Web Servicesã®CI/CDãµãŒãã¹ã§ããCodePipelineã¯ä»ã®AWSãµãŒãã¹ãšçµ±åãããŠãããAWSã¯ã©ãŠãã§ãã¹ããããŠãããããžã§ã¯ãã«é©ããéžæè¢ã§ãã
- Travis CIïŒç¹ã«ãªãŒãã³ãœãŒã¹ãããžã§ã¯ãã§äººæ°ã®ãããã¹ãåCIãµãŒãã¹ã§ããTravis CIã¯ã䜿ãããããäžå¿ã«ãCIãã€ãã©ã€ã³ã®ã»ããã¢ãããç°¡çŽ åããŸãã
ãã€ãã©ã€ã³èªååããŒã«ã®ã³ã¢æ©èœïŒ
- ãã€ãã©ã€ã³å®çŸ©ïŒãŠãŒã¶ãŒããèªååããããã«ãããã³ãããã€ã¡ã³ãããã»ã¹ãæ§æããã¹ããŒãžãã¹ããããããã³äŸåé¢ä¿ãå®çŸ©ã§ããããã«ããŸãã
- ããŒãžã§ã³ç®¡ççµ±åïŒGitãªã©ã®ããŒãžã§ã³ç®¡çã·ã¹ãã ãšã·ãŒã ã¬ã¹ã«çµ±åãããã³ãŒã倿Žã«åºã¥ããŠãã€ãã©ã€ã³ãããªã¬ãŒããŸãã
- ãã«ãèªååïŒã³ãŒãã®ã³ã³ãã€ã«ãææç©ã®ããã±ãŒãžåãéçè§£æã®å®è¡ãå«ããã«ãããã»ã¹ãèªååããŸãã
- ãã¹ãèªååïŒåäœãã¹ããçµ±åãã¹ãããšã³ãããŒãšã³ããã¹ããå«ãããŸããŸãªçš®é¡ã®ãã¹ããå®è¡ããæ©èœãæäŸããçµæãšã¬ããŒããæäŸããŸãã
- éç¥ãšã¬ããŒãïŒãã«ããšãã¹ãã®ã¹ããŒã¿ã¹ïŒå€±æãå«ãïŒã«é¢ããéç¥ãéä¿¡ãããããã°ãšåæã®ããã®ã¬ããŒããæäŸããŸãã
- ãããã€ã¡ã³ãèªååïŒéçºãã¹ããŒãžã³ã°ãæ¬çªãªã©ã®ããŸããŸãªç°å¢ãžã®ãœãããŠã§ã¢ã®ãããã€ã¡ã³ããèªååããŸãã
- ã¹ã±ãŒã©ããªãã£ïŒã¯ãŒã¯ããŒãã®éèŠã«åºã¥ããŠãªãœãŒã¹ãã¹ã±ãŒã«ã¢ãããŸãã¯ã¹ã±ãŒã«ããŠã³ããèœåã
- ä»ã®ããŒã«ãšã®çµ±åïŒã³ã³ããåãç£èŠãã»ãã¥ãªãã£ããŒã«ãªã©ã®ä»ã®ããŒã«ãšã®çµ±åããµããŒãããŸãã
CIãã€ãã©ã€ã³ã®ã»ããã¢ããïŒå®è·µçãªäŸ
Jenkinsã䜿çšããCIãã€ãã©ã€ã³ã®ã»ããã¢ããã®ç°¡åãªäŸãèŠãŠã¿ãŸãããããã®äŸã¯ãé¢é£ããåºæ¬çãªæé ã瀺ããŠããŸãããéžæããããŒã«ããããžã§ã¯ãã®ããŒãºãããã³ããã°ã©ãã³ã°èšèªã«ãã£ãŠè©³çްã¯ç°ãªãå ŽåããããŸãã
ã·ããªãªïŒGitHubã§ãã¹ããããŠããGitãªããžããªã䜿çšãããPythonã§æžãããã·ã³ãã«ãªWebã¢ããªã±ãŒã·ã§ã³ã
æé ïŒ
- Jenkinsã®ã€ã³ã¹ããŒã«ïŒãµãŒããŒïŒããŒã«ã«ãŸãã¯ã¯ã©ãŠãïŒã«Jenkinsãã€ã³ã¹ããŒã«ããŸããããã«ã¯éåžžãJenkins WARãã¡ã€ã«ãããŠã³ããŒãããããDockerã®ãããªã³ã³ããåã¢ãããŒãã䜿çšããŸãã
- ãã©ã°ã€ã³ã®ã€ã³ã¹ããŒã«ïŒGitãã©ã°ã€ã³ïŒGitãªããžããªãšã®çµ±åçšïŒãPythonãã©ã°ã€ã³ïŒå¿ èŠãªå ŽåïŒãããã³ãã¹ããã¬ãŒã ã¯ãŒã¯ïŒäŸïŒpytestïŒã«å¿ èŠãªãã©ã°ã€ã³ãªã©ãå¿ èŠãªJenkinsãã©ã°ã€ã³ãã€ã³ã¹ããŒã«ããŸãã
- Jenkinsãžã§ãã®äœæïŒæ°ããããªãŒã¹ã¿ã€ã«ãããžã§ã¯ãïŒJenkinsãžã§ãïŒãäœæããŸãã
- ãœãŒã¹ã³ãŒã管çã®èšå®ïŒGitãªããžããªã«æ¥ç¶ããããã«ãžã§ããèšå®ããŸããGitãªããžããªã®URLãšèªèšŒæ å ±ãæäŸããŸããç£èŠãããã©ã³ãïŒäŸïŒãmainããŸãã¯ãdevelopãïŒãæå®ããŸãã
- ãã«ãããªã¬ãŒã®èšå®ïŒGitãªããžããªãžã®å€æŽãããã·ã¥ããããšãã«ãã«ããèªåçã«ããªã¬ãŒããããã«ãžã§ããèšå®ããŸããæãäžè¬çãªã®ã¯ãPoll SCMããªãã·ã§ã³ã§ãæå®ãããééã§ãªããžããªã®å€æŽããã§ãã¯ããŸãããã1ã€ã®æ¹æ³ã¯ãã³ããããããã·ã¥ããããšãã«ãã«ããããªã¬ãŒããWebhookã䜿çšããããšã§ãã
- ãã«ãã¹ãããã®è¿œå ïŒæ¬¡ã®ã¢ã¯ã·ã§ã³ãå®è¡ããããã®ãã«ãã¹ãããã远å ããŸãïŒ
- ã³ãŒãã®ãã§ãã¯ã¢ãŠãïŒGitãªããžããªããææ°ã®ã³ãŒãããã§ãã¯ã¢ãŠãããŸãã
- äŸåé¢ä¿ã®ã€ã³ã¹ããŒã«ïŒã¢ããªã±ãŒã·ã§ã³ã«å¿ èŠãªPythonäŸåé¢ä¿ãã€ã³ã¹ããŒã«ããŸãïŒäŸïŒ`pip install -r requirements.txt`ã䜿çšïŒã
- ãã¹ãã®å®è¡ïŒãã¹ãã¹ã€ãŒããå®è¡ããŸãïŒäŸïŒ`pytest`ãŸãã¯`unittest`ã䜿çšïŒã
- ã¢ããªã±ãŒã·ã§ã³ã®ããã±ãŒãžåïŒDockerã䜿çšããŠãã¢ããªã±ãŒã·ã§ã³ãã³ã³ããã€ã¡ãŒãžãšããŠããã±ãŒãžåããŸãã
- ã¢ããªã±ãŒã·ã§ã³ã®ãããã€ïŒã¢ããªã±ãŒã·ã§ã³ããã¹ãç°å¢ã«ãããã€ããŸãã
- ãã«ãåŸã¢ã¯ã·ã§ã³ã®èšå®ïŒãã¹ãçµæã®å ¬éãéç¥ã®éä¿¡ãææç©ã®ã¢ãŒã«ã€ããªã©ããã«ãåŸã¢ã¯ã·ã§ã³ãèšå®ããŸãã
- ãžã§ãã®ä¿åãšå®è¡ïŒãžã§ãèšå®ãä¿åããæåã§ãã«ããããªã¬ãŒããŠãã€ãã©ã€ã³ããã¹ãããŸãã
ãã®åºæ¬çãªäŸã¯ãããã»ã¹ã®äžè¬çãªã¢ã€ãã¢ãæäŸããŸããåã¹ãããã¯ããããžã§ã¯ãã®ç¹å®ã®ããŒãºã«åãããŠèª¿æŽããã詳现ãªèšå®ãšç¹å®ã®ã³ãã³ãã®ã¹ã¯ãªããäœæãå«ãŸããŸããããšãã°ãKubernetesãžã®ã³ã³ããåããããããã€ã¡ã³ãã§ãã¢ããªã±ãŒã·ã§ã³ã®ã¹ããŒãžã³ã°ç°å¢çšã®ç°å¢ãã»ããã¢ãããããªã©ã§ãã
CIå®è£ ã®ãã¹ããã©ã¯ãã£ã¹
CIã广çã«å®è£ ããã«ã¯ãããŒã«ã®éžæä»¥äžã®ãã®ãå¿ èŠã§ãããã¹ããã©ã¯ãã£ã¹ãžã®æºæ ãæ±ããããŸãã
- ãã¹ãŠãèªååããïŒãã«ãããã¹ãããããã€ã¡ã³ãããã»ã¹ã®å¯èœãªéãå€ããèªååããŠãæåä»å ¥ãæå°éã«æãããšã©ãŒã®ãªã¹ã¯ã軜æžããŸãã
- å æ¬çãªãã¹ããäœæããïŒã³ãŒãå質ã確ä¿ãããã°ãæ©æã«æ€åºããããã«ã培åºçãªåäœãã¹ããçµ±åãã¹ããããã³ãšã³ãããŒãšã³ããã¹ãã®äœæã«æè³ããŸãã
- ãã«ããé«éã«ä¿ã€ïŒéçºè ã«è¿ éãªãã£ãŒãããã¯ãæäŸããããã«ããã«ãæéãæé©åããŸããããã«ã¯ããã¹ãã®äžŠåå®è¡ãäŸåé¢ä¿ã®ãã£ãã·ã¥ããã«ãã¹ã¯ãªããã®æé©åãå«ãŸããå ŽåããããŸãã
- ããŒãžã§ã³ç®¡çã䜿çšããïŒããŒãžã§ã³ç®¡çã·ã¹ãã ã䜿çšããŠã³ãŒã倿Žã管çããã³ã©ãã¬ãŒã·ã§ã³ãä¿é²ããŸãã
- é »ç¹ã«çµ±åããïŒéçºè ã«ãçæ³çã«ã¯1æ¥ã«è€æ°åãã³ãŒã倿Žãé »ç¹ã«çµ±åããããã«å¥šå±ããŸãã
- è¿ éãªãã£ãŒãããã¯ãæäŸããïŒéçºè ããã«ããšãã¹ãã®çµæã«é¢ãã峿ã®ãã£ãŒãããã¯ãåãåãããã«ããŸãã
- ç Žæãããã«ãã¯ããã«ä¿®æ£ããïŒãã«ããã€ãã©ã€ã³ããããã¯ãããªãããã«ãããã¹ãŠã®çµ±åãã¹ã ãŒãºã«å®è¡ãããããã«ããããã«ãç Žæãããã«ãã®ä¿®æ£ãåªå ããŸãã
- ç£èŠãšåæïŒCIãã€ãã©ã€ã³ã®ããã©ãŒãã³ã¹ãç£èŠããçµæãåæããŠæ¹åã®æ©äŒãç¹å®ããŸãã
- ã³ãŒããšããŠã®æ§æïŒCI/CDãã€ãã©ã€ã³å®çŸ©ïŒäŸïŒJenkinsfileãGitLab CI/CD YAMLïŒãã³ãŒããªããžããªã«ä¿åããŠãããŒãžã§ã³ç®¡çãšåçŸæ§ã確ä¿ããŸãã
- ã»ãã¥ãªãã£äžã®èæ ®äºé ïŒäžæ£ã¢ã¯ã»ã¹ãé²ããæ©å¯æ å ±ãä¿è·ããããã«ãCI/CDãã€ãã©ã€ã³ãä¿è·ããŸãããã€ãã©ã€ã³ã®äžéšãšããŠã»ãã¥ãªãã£ã¹ãã£ã³ãå®è£ ããŸãã
CI/CDãšã°ããŒãã«ãœãããŠã§ã¢ããŒã
ã°ããŒãã«ãœãããŠã§ã¢ããŒã ã«ãšã£ãŠãCI/CDã¯ç¹ã«éèŠã§ããç°ãªãåœãã¿ã€ã ãŸãŒã³ã«åæ£ããããŒã ã¯ã次ã®ãããªç¬èªã®èª²é¡ã«çŽé¢ããŸãã
- ã³ãã¥ãã±ãŒã·ã§ã³ã®éå£ïŒã¿ã€ã ãŸãŒã³ã®éããèšèªã®å£ããã³ãã¥ãã±ãŒã·ã§ã³ãå°é£ã«ããå¯èœæ§ããããŸãã
- ã³ã©ãã¬ãŒã·ã§ã³ã®èª²é¡ïŒå°ççã«åæ£ããããŒã éã®äœæ¥ã®èª¿æŽã«ã¯ã广çãªããŒã«ãšããã»ã¹ãå¿ èŠã§ãã
- ãã¹ãã®è€éãïŒããŸããŸãªå°åãããã€ã¹ã§ã®ãœãããŠã§ã¢ãã¹ãã¯ãããã»ã¹ã«è€éããå ããŸãã
- ãããã€ã¡ã³ãã®è€éãïŒããŸããŸãªå°åãã€ã³ãã©ã¹ãã©ã¯ãã£ãžã®ãœãããŠã§ã¢ã®ãããã€ã¡ã³ãã«ã¯ãæ éãªèšç»ãšå®è¡ãå¿ èŠã§ãã
CI/CDã¯ã次ã®ããã«ãããã®èª²é¡ã«å¯ŸåŠããã®ã«åœ¹ç«ã¡ãŸãã
- ã³ã©ãã¬ãŒã·ã§ã³ã®ä¿é²ïŒã³ãŒãçµ±åããã¹ãããããã€ã¡ã³ãã®éäžãã©ãããã©ãŒã ãæäŸããããšã«ãããCI/CDã¯ã忣ããŒã éã®ããè¯ãã³ã©ãã¬ãŒã·ã§ã³ãä¿é²ããŸãã
- ããã»ã¹ã®èªååïŒãã«ãããã³ãããã€ã¡ã³ãããã»ã¹ãèªååããããšã§ãæå調æŽã®å¿ èŠæ§ãæžããããè¿ éãªãªãªãŒã¹ãµã€ã¯ã«ãšå¹ççãªããŒã 管çãå¯èœã«ãªããŸãã
- ã³ãã¥ãã±ãŒã·ã§ã³ã®æ¹åïŒCI/CDããŒã«ã¯ããã«ããšãã¹ãããã»ã¹ãžã®å¯èŠæ§ãæäŸãããã¹ãŠã®ããŒã ã¡ã³ããŒããœãããŠã§ã¢ã®ã¹ããŒã¿ã¹ã«ã€ããŠæ å ±ãæäŸãããããã«ããŸãã
- ç¶ç¶çããªããªãŒã®ãµããŒãïŒã°ããŒãã«ãŠãŒã¶ãŒãžã®ãããé »ç¹ã§ä¿¡é Œæ§ã®é«ããœãããŠã§ã¢ãªãªãŒã¹ãå¯èœã«ããŸãã
ã°ããŒãã«ããŒã ãšã®CI/CDã®å®éã®äŸïŒ
- ããŒã«ãªãŒãŒã·ã§ã³ãã¹ãïŒç±³åœã«éçºããŒã ãæã¡ãæ¥æ¬ã«ãã¹ãããŒã ãæã€ãœãããŠã§ã¢äŒæ¥ã¯ãCI/CDãã€ãã©ã€ã³ã䜿çšããŠã¢ããªã±ãŒã·ã§ã³ã®ããŒã«ãªãŒãŒã·ã§ã³ãã¹ããèªååã§ããŸãããã€ãã©ã€ã³ã¯ããªããžããªã«å€æŽãããã·ã¥ããããã³ã«ãæ¥æ¬èªèšå®ã®ãã¹ãç°å¢ã«ã¢ããªã±ãŒã·ã§ã³ãèªåçã«ãã«ãããŠãããã€ããããã«æ§æã§ããŸããæ¬¡ã«ããã¹ãã¯ãããŒã«ãªãŒãŒã·ã§ã³ã®åé¡ããªãã確èªããããã«ããã®ç°å¢ã«å¯ŸããŠèªåçã«å®è¡ã§ããŸãã
- ã¯ãã¹ãã©ãããã©ãŒã ãã¹ãïŒãšãŒããããšã€ã³ãã®ã¡ã³ããŒãããã¢ãã€ã«ã¢ããªéçºããŒã ã¯ãCI/CDãæŽ»çšããŠãããŸããŸãªã¢ãã€ã«ããã€ã¹ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã§ã¢ããªããã¹ãã§ããŸãããã€ãã©ã€ã³ã¯ãããŸããŸãªãšãã¥ã¬ãŒã¿ãŒãŸãã¯å®éã®ããã€ã¹ïŒã¯ã©ãŠãããŒã¹ã®ããã€ã¹ãã¡ãŒã ã䜿çšããå¯èœæ§ããïŒã§èªååããããã«ããšãã¹ããããªã¬ãŒããŠãå¹ åºãããã€ã¹ã§ã®äºææ§ã確ä¿ã§ããŸãã
- å°åãããã€ã¡ã³ãïŒã°ããŒãã«ãªeã³ããŒãžã£ã¹ãã©ãããã©ãŒã ã¯ãCI/CDãå©çšããŠãWebãµã€ãã®æŽæ°ãããŸããŸãªå°åã«åæã«ãããã€ã§ããŸãããã€ãã©ã€ã³ã¯ãç±³åœããšãŒããããã¢ãžã¢ã®ãµãŒããŒã«ã¢ããªã±ãŒã·ã§ã³ããããã€ã§ããäžçäžã®ãŠãŒã¶ãŒãææ°ã®æ©èœãšãã°ä¿®æ£ãåæã«åãåããããã«ããŸãã
課é¡ãšèæ ®äºé
CIã¯å€ãã®ã¡ãªãããæäŸããŸãããããŒã ãèªèããŠããã¹ãããã€ãã®èª²é¡ãæç€ºããŸãã
- åæã»ããã¢ããã³ã¹ãïŒCI/CDãã€ãã©ã€ã³ã®ã»ããã¢ããã«ã¯ãæéããªãœãŒã¹ãå°éç¥èã®é¢ã§åææè³ãå¿ èŠã«ãªãå ŽåããããŸãã
- ã¡ã³ããã³ã¹ã®ãªãŒããŒãããïŒCI/CDãã€ãã©ã€ã³ã®ç¶æãšæŽæ°ã«ã¯ãç¶ç¶çãªåªåãšæ³šæãå¿ èŠã«ãªãå ŽåããããŸãã
- ãã¹ãç°å¢ç®¡çïŒç¹ã«è€éãªã¢ããªã±ãŒã·ã§ã³ãã€ã³ãã©ã¹ãã©ã¯ãã£ã®å Žåããã¹ãç°å¢ã®ç®¡çã¯å°é£ã«ãªãå¯èœæ§ããããŸãã
- ã»ãã¥ãªãã£äžã®èæ ®äºé ïŒç¹ã«æ©å¯ããŒã¿ãæ¬çªç°å¢ãæ±ãå ŽåãCI/CDãã€ãã©ã€ã³ã®ã»ãã¥ãªãã£ã確ä¿ããããšãäžå¯æ¬ ã§ãã
- æåçããã³ããã»ã¹çãªé©å¿ïŒCI/CDæåãžã®ç§»è¡ã«ã¯ãããŒã ã®ããã»ã¹ãéçºè ã®åãæ¹ã«èª¿æŽãå¿ èŠã«ãªãå ŽåããããŸãã
- ã¹ãã«ã®ã£ããïŒäžéšã®ããŒã ã¯ãèªååããã¹ããDevOpsãã©ã¯ãã£ã¹ã«é¢é£ããæ°ããã¹ãã«ãç¿åŸããå¿ èŠãããå ŽåããããŸãã
CIã®æªæ¥ïŒãã¬ã³ããšã€ãããŒã·ã§ã³
CI/CDã®ç¶æ³ã¯åžžã«é²åããŠãããããã€ãã®ãã¬ã³ããšã€ãããŒã·ã§ã³ããã®æªæ¥ã圢äœã£ãŠããŸãã
- ã€ã³ãã©ã¹ãã©ã¯ãã£ã»ã¢ãºã»ã³ãŒãïŒIaCïŒïŒã³ãŒãã䜿çšããã€ã³ãã©ã¹ãã©ã¯ãã£ã®ããããžã§ãã³ã°ãšç®¡çã®èªååãããã¯ãå®å šãªãšã³ãããŒãšã³ãã®èªååã®ããã«CI/CDãã€ãã©ã€ã³ã«çµ±åã§ããŸãã
- ãµãŒããŒã¬ã¹CI/CDïŒãµãŒããŒã¬ã¹ãã¯ãããžãŒã䜿çšããŠã¢ããªã±ãŒã·ã§ã³ããã«ãããã³ãããã€ããéçšãªãŒããŒããããåæžããŠã¹ã±ãŒã©ããªãã£ãåäžãããŸãã
- GitOpsïŒGitãåäžã®ä¿¡é Œã§ãããœãŒã¹ãšããŠäœ¿çšããŠãã€ã³ãã©ã¹ãã©ã¯ãã£ãšã¢ããªã±ãŒã·ã§ã³ã管çããããã®å®£èšåã®æ¹æ³ã
- èªååã®åŒ·åïŒèªååã¯åŒãç¶ãäžå¿çãªçŠç¹ãšãªããAIãšæ©æ¢°åŠç¿ã®å°é ã«ãããããè€éãªã¿ã¹ã¯ãèªååãããŸãã
- ã»ãã¥ãªãã£ã®åŒ·åïŒã»ãã¥ãªãã£ã¯ãèªååãããã»ãã¥ãªãã£ã¹ãã£ã³ãšèåŒ±æ§æ€åºã«ãããCI/CDãã€ãã©ã€ã³ã«ããã«çµ±åãããŸãã
- ã³ã³ããåãšãã€ã¯ããµãŒãã¹ïŒDockerãªã©ã®ã³ã³ããåãã¯ãããžãŒãšãã€ã¯ããµãŒãã¹ã¢ãŒããã¯ãã£ã®æ¡çšãå¢å ããããšã«ãããã³ã³ããŒãã³ãã®ç¬ç«ãããããã€ã¡ã³ããå¯èœã«ãããããé«åºŠãªCI/CDæŠç¥ãæšé²ãããŸãã
çµè«
广çãªãã€ãã©ã€ã³èªååããŒã«ã«ãã£ãŠåŒ·åãããç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ã¯ããã¯ããªãã·ã§ã³ã®ãã©ã¯ãã£ã¹ã§ã¯ãªããçŸä»£ã®ãœãããŠã§ã¢éçºã«äžå¯æ¬ ãªèŠä»¶ã§ããCIã®ååãšãJenkinsãGitLab CIãCircleCIãAzure DevOpsãAWS CodePipelineãªã©ã®ããŒã«ã®åãçµã¿åãããããšã§ãããŒã ã¯ããè¿ éãã€ç¢ºå®ã«ãœãããŠã§ã¢ããã«ãããã¹ãããããã€ã§ããçç£æ§ã®åäžãã³ãŒãå質ã®åäžãåžå Žæå ¥ãŸã§ã®æéã®ççž®ã«ã€ãªãããŸããã°ããŒãã«ãœãããŠã§ã¢ããŒã ã«ãšã£ãŠãCI/CDã¯ããã«éèŠã§ãããã³ãã¥ãã±ãŒã·ã§ã³ã®éå£ãå æãã广çã«èª¿æŽããäžçäžã®ãŠãŒã¶ãŒã«ç°¡åã«ãœãããŠã§ã¢ããããã€ããããšãå¯èœã«ããŸããCIã®ãã¹ããã©ã¯ãã£ã¹ãæ¡çšããææ°ã®ãã¬ã³ããšã€ãããŒã·ã§ã³ãåžžã«ææ¡ããããšã§ãéçºããŒã ã¯ããœãããŠã§ã¢éçºããã»ã¹ãå¹ççã§å¹æçã§ãããçµ¶ããé²åããããžã¿ã«ã®ç¶æ³ã®éèŠã«å¯Ÿå¿ã§ããããšãä¿èšŒã§ããŸãã